/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Validador;

import Beans.Horario;
import Daos.HorarioDao;

/**
 *
 * @author williambartko
 */
public class ValidaHorario {

    public ValidaHorario(Horario horario) {
        horarioChegada = horario.getHorarioChegada();
        horarioSaida = horario.getHorarioSaida();

        validadorGenerico = new ValidadorGenerico();

        inicializaMensagensCampo();//inicializa mensagens de erro
    }
    String horarioChegada;
    String horarioSaida;
    ValidadorGenerico validadorGenerico;
    Horario horario;
    int codErro = 0;
    private String[] mensagensCampos = new String[2];

    public boolean validaHorarioChegada() {
        if (!validadorGenerico.validaCampoVazioOuNulo(horarioChegada)) {
            codErro = 1;
            setaMensagemsDeErro(codErro);
            return false;
        } else {
            if (!validadorGenerico.aceitaApenasHorariosValidos(horarioChegada)) {
                return false;
            }
        }
        return true;
    }

    public boolean validaHorarioSaida() {
        if (!validadorGenerico.validaCampoVazioOuNulo(horarioSaida)) {
            codErro = 2;
            setaMensagemsDeErro(codErro);
            return false;
        } else {
            if (!validadorGenerico.aceitaApenasHorariosValidos(horarioSaida)) {
                return false;
            }
        }
        return true;
    }

    private void inicializaMensagensCampo() {
        mensagensCampos[0] = "Horario de Chegada valido";
        mensagensCampos[1] = "Horario de Saida valido";
    }

    public String[] getMensagensCampos() {

        return mensagensCampos;
    }

    private void setaMensagemsDeErro(int codErro) {
        switch (codErro) {
            case 1:
                mensagensCampos[0] = "Horario de Chegada inválido";
                break;
            case 2:
                mensagensCampos[1] = "Horario de Saida inválido";
                break;
        }
    }

    public boolean validaTodosOsCampos() {
        if (validaHorarioChegada()
                && validaHorarioSaida()) {
            return true;
        } else {
            return false;
        }
    }

    public void gravarDadosNoBanco() {

        validaTodosOsCampos();
        if (codErro == 0) { //se nao detectar nenhum problema, salva no banco
            horario = new Horario(horarioChegada, horarioSaida);
            new HorarioDao(horario).persist();
            System.out.println(" Horario Salvo no banco!");
        }
        setaMensagemsDeErro(codErro);//seta mensagem de erro
        System.out.println(codErro);
    }

    public Horario retornaObjetoValidado() {
        return horario;
    }

    public static void main(String[] args) {
        ValidaHorario validaHorario = new ValidaHorario(new Horario("07091989", "07091989"));

        validaHorario.gravarDadosNoBanco();

        for (int i = 0; i < validaHorario.getMensagensCampos().length; i++) {
            String campo[] = validaHorario.getMensagensCampos();
            System.out.println(campo[i]);
            System.out.println("===============================================");
        }


    }
}
